-- 设置默认编码为 UTF-8
vim.g.encoding = "UTF-8"
vim.o.fileencoding = "utf-8"

-- 设置滚动时的偏移量，避免光标靠近窗口边缘
vim.o.scrolloff = 8
vim.o.sidescrolloff = 8

-- 启用绝对行号和相对行号，方便代码定位
vim.wo.number = true
vim.wo.relativenumber = false

-- 高亮当前行，但不高亮当前列
vim.wo.cursorline = true
vim.wo.cursorcolumn = false

-- 在左侧显示签名列，用于放置断点等标记
vim.wo.signcolumn = "yes"

-- 右侧参考线
-- vim.wo.colorcolumn = "80"

-- 设置制表符为 2 个空格的宽度，并开启 shift 时的四舍五入
vim.o.tabstop = 2
vim.bo.tabstop = 2
vim.o.softtabstop = 2
vim.o.shiftround = true

-- 设置缩进宽度为 2 个空格
vim.o.shiftwidth = 2
vim.bo.shiftwidth = 2

-- 使用空格替代制表符进行缩进
vim.o.expandtab = true
vim.bo.expandtab = true

-- 新行开始时自动使用当前行的缩进规则
vim.o.autoindent = true
vim.bo.autoindent = true
vim.o.smartindent = true

-- 搜索时忽略大小写，除非包含大写字母
vim.o.ignorecase = true
vim.o.smartcase = true

-- 关闭搜索结果高亮，但启用增量搜索
vim.opt.hlsearch = false
vim.o.incsearch = true

-- 命令行的高度
vim.o.cmdheight = 1

-- 当文件在外部被修改时，自动加载更改
vim.o.autoread = true
vim.bo.autoread = true

-- 禁用自动换行，避免代码行被分割显示
vim.wo.wrap = false

-- 设置在编辑模式下能够使用的键
vim.o.whichwrap = "<,>,[,]"
vim.o.hidden = true

-- 使用鼠标
vim.o.mouse = "a"

-- 关闭备份文件的生成
vim.o.backup = false
vim.o.writebackup = false
vim.o.swapfile = false

-- 更新时间间隔设置为 500 毫秒
vim.o.updatetime = 500

-- 键位映射等待时间设置为 500 毫秒
vim.o.timeoutlen = 500

-- 新窗口默认分割方向为右侧和下方
vim.o.splitbelow = true
vim.o.splitright = true

-- 启用真彩色支持，提供更好的颜色显示
vim.o.termguicolors = true
vim.opt.termguicolors = true

-- 设置不可见字符的显示方式
vim.o.list = false
vim.o.listchars = "space:·,tab:··"

-- 配置补全引擎的选项
vim.g.completeopt = "menu,menuone,noselect,noinsert"

-- 启用命令行补全增强功能
vim.o.wildmenu = true

-- 简化插入模式下的消息，不显示冗余的信息
vim.o.shortmess = vim.o.shortmess .. "c"

-- 弹出菜单最多显示 10 个条目
vim.o.pumheight = 10

-- 始终显示标签行
vim.o.showtabline = 2

-- 用 lualine 插件替代默认模式指示
vim.o.showmode = false

-- 启用系统剪贴板（单引号+ 寄存器）
vim.opt.clipboard = "unnamedplus"

-- 在初始化脚本的开始禁用 netrw，推荐使用 nvim-tree
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1

-- 在可视块编辑模式中允许光标超出行末尾
vim.opt.virtualedit = "block"
